﻿CMAKE_MINIMUM_REQUIRED(VERSION 3.10)
PROJECT(NFDBPlugin)

AUX_SOURCE_DIRECTORY(. SRC)

if (CMAKE_BUILD_TYPE STREQUAL "Release")
	ADD_LIBRARY( ${PROJECT_NAME} STATIC ${SRC} )
elseif(CMAKE_BUILD_TYPE STREQUAL "Debug")
	ADD_LIBRARY( ${PROJECT_NAME} STATIC ${SRC} )
elseif (CMAKE_BUILD_TYPE STREQUAL "DynamicRelease")
	ADD_LIBRARY( ${PROJECT_NAME} SHARED ${SRC} )
	# 只对 CMake 目标建立依赖关系（系统库和库文件名不是 CMake 目标）
	# mysqlpp CMake 目标是可选的，只在启用编译时添加依赖
	# 但 libmysqlpp.a 和 libmysqlclient.a 始终需要链接（预编译库）
	if(CMAKE_BUILD_MYSQLPP)
		add_dependencies(${PROJECT_NAME} mysqlpp ${NFSHM_CORE_LIBS})
	else()
		add_dependencies(${PROJECT_NAME} ${NFSHM_CORE_LIBS})
	endif()
	# 动态库需要链接核心库和系统库（包含 NF3rdCommon/hiredis、protobuf 等）才能使用相关符号
	# NF3rdCommon 包含 hiredis，提供 redisReaderCreate 等符号
	# libprotobuf.a 和 libprotobuf-nanopb.a 提供 protobuf 相关符号
	TARGET_LINK_LIBRARIES(${PROJECT_NAME} 
		${NFSHM_CORE_LIBS} 
		${NFSHM_SYSTEM_LIBS}
		libmysqlpp.a 
		libmysqlclient.a
	)
elseif(CMAKE_BUILD_TYPE STREQUAL "DynamicDebug")
	ADD_LIBRARY( ${PROJECT_NAME} SHARED ${SRC} )
	# 只对 CMake 目标建立依赖关系（系统库和库文件名不是 CMake 目标）
	# mysqlpp CMake 目标是可选的，只在启用编译时添加依赖
	# 但 libmysqlpp.a 和 libmysqlclient.a 始终需要链接（预编译库）
	if(CMAKE_BUILD_MYSQLPP)
		add_dependencies(${PROJECT_NAME} mysqlpp ${NFSHM_CORE_LIBS})
	else()
		add_dependencies(${PROJECT_NAME} ${NFSHM_CORE_LIBS})
	endif()
	# 动态库需要链接核心库和系统库（包含 NF3rdCommon/hiredis、protobuf 等）才能使用相关符号
	# NF3rdCommon 包含 hiredis，提供 redisReaderCreate 等符号
	# libprotobuf.a 和 libprotobuf-nanopb.a 提供 protobuf 相关符号
	TARGET_LINK_LIBRARIES(${PROJECT_NAME} 
		${NFSHM_CORE_LIBS} 
		${NFSHM_SYSTEM_LIBS}
		libmysqlpp.a 
		libmysqlclient.a
	)
endif()

# ============================================================================
# Install 配置
# ============================================================================
# 只有动态库版本才需要安装
if (CMAKE_BUILD_TYPE STREQUAL "DynamicRelease")
    install(TARGETS ${PROJECT_NAME}
            LIBRARY DESTINATION "Bin/DynamicRelease"
            RUNTIME DESTINATION "Bin/DynamicRelease"
            ARCHIVE DESTINATION "Bin/DynamicRelease")
elseif(CMAKE_BUILD_TYPE STREQUAL "DynamicDebug")
    install(TARGETS ${PROJECT_NAME}
            LIBRARY DESTINATION "Bin/DynamicDebug"
            RUNTIME DESTINATION "Bin/DynamicDebug"
            ARCHIVE DESTINATION "Bin/DynamicDebug")
endif()

